home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / accs / clipbord / scraplib / ccport.h next >
Encoding:
C/C++ Source or Header  |  1985-07-19  |  4.8 KB  |  201 lines

  1. /**********
  2. *
  3. *    Headerfile zur Erzeugung portabler C-Programme auf dem ST
  4. *    ---------------------------------------------------------
  5. *
  6. *    Unterstützt werden die Compiler-Systeme:
  7. *        - Mark Williams C V1.1
  8. *        - Lattice C V3.03.04
  9. *        - Alcyon C (Entwicklungssystem)
  10. *        - Megamax C V1.1
  11. *
  12. *    Dieser Header ist für die Einbindung in GEM-Programme gedacht.
  13. *    Enthalten sind:
  14. *        - Definitionen portabler Datengrößen
  15. *        - Die je nach System unterschiedlichen Includes
  16. *        - Einige häufig benutzte Funktionsdeklarationen
  17. *
  18. *    02/87    Gerd Möllmann
  19. *
  20. ***********/
  21.  
  22.  
  23.  
  24.  
  25.  
  26. /* 
  27.  * Compilerauswahl.
  28.  * ----------------
  29.  * Nicht alle Compiler unterstützen die Definition von Präprozessor-
  30.  * Konstanten und Makros in einer Kommandozeile, deshalb hier eine
  31.  * gesonderte Auflistung. Nicht zutreffendes auskommentieren oder -
  32.  * besser noch - mit "#ifdef" oder "#ifndef" ausklammern. Nicht "#if"
  33.  * verwenden, wenn die Quelltexte mit "Megamax" kompiliert werden
  34.  * sollen (funktioniert dort nicht). 
  35.  */
  36.  
  37. #define     LATTICE
  38.  
  39.  
  40.  
  41.  
  42. /*
  43.  * Portable Datengrößen
  44.  * --------------------
  45.  * Normalerweise verwendet man auf dem ST Makros, um portable 
  46.  * Datengrößen zu erhalten (BYTE, WORD, ...). Da diese aber alle groß-
  47.  * geschrieben werden müssen, was einen zusätzicher Aufwand bei der Eingabe
  48.  * bedeutet, schlage ich alternativ "typedef"-Vereinbarungen vor.
  49.  * Ich selbst verwende mal das eine, mal das andere.
  50.  */
  51.  
  52. #define    REG    register        /* Verwendet man Makros für    */
  53. #define EXTERN    extern            /* die Typ-Bezeichnung, muß man    */
  54. #define LOCAL    auto            /* auch die Speicherklassen    */
  55. #define MLOCAL    static            /* großschreiben können, alles    */
  56.                     /* andere sieht nicht aus    */
  57. #ifdef     MARK_WILLIAMS
  58.  
  59. #    define    BYTE    char        /* 8 Bits mit Vorzeichen    */
  60. #    define    UBYTE    unsigned char    /* 8 Bits ohne Vorzeichen    */
  61. #    define     WORD    int        /* 16 Bits mit            */
  62. #    define    UWORD    unsigned    /*    und ohne Vorzeichen    */
  63. #    define  LONG    long        /* 32 Bits mit            */
  64. #    define  ULONG    unsigned long    /*     und ohne Vorzeichen    */
  65. #    define    VOID    void        /* Typ "statement" o. "expr."    */
  66.  
  67. typedef    char        byte;        /* das gleiche als Typ-        */
  68. typedef unsigned char    ubyte;        /*     Variablen        */
  69. typedef    int        word;
  70. typedef    unsigned     uword;
  71. typedef    unsigned long    ulong;
  72.  
  73. #endif
  74.  
  75. #ifdef    LATTICE
  76. #    define    BYTE    char
  77. #    define    UBYTE    unsigned char
  78. #    define     WORD    short        /* bei Lattice ist "int" 32    */
  79. #    define    UWORD    unsigned short    /* Bits lang            */
  80. #    define  LONG    int
  81. #    define  ULONG    unsigned
  82. #    define    VOID    void
  83.  
  84. typedef    char        byte;
  85. typedef unsigned char    ubyte;
  86. typedef    short        word;
  87. typedef    unsigned short     uword;
  88. typedef    unsigned     ulong;
  89.  
  90. #endif
  91.  
  92. #ifdef    DIGITAL
  93.  
  94. #    define    BYTE    char        /* Vorsicht! Alcyon kennt nur    */
  95. #    define    UBYTE    char        /* "signed char", also immer     */
  96. #    define     WORD    int        /* Casts verwenden, wenn es auf    */
  97. #    define    UWORD    unsigned int    /* "unsigned char" ankommt!    */
  98. #    define  LONG    long        /* gleiches gilt für "long"    */
  99. #    define  ULONG    long
  100. #    define    VOID    int        /* kein "void" (?)        */
  101.  
  102. typedef    char        byte;
  103. typedef char        ubyte;
  104. typedef    int        word;
  105. typedef    unsigned int     uword;
  106. typedef    long        ulong;
  107. typedef int        void;
  108.  
  109. #endif
  110.  
  111. #ifdef    MEGAMAX
  112.  
  113. #    define    BYTE    char
  114. #    define    UBYTE    unsigned char
  115. #    define     WORD    int
  116. #    define    UWORD    unsigned int
  117. #    define  LONG    long
  118. #    define  ULONG    unsigned long
  119. #    define    VOID    int
  120.  
  121. typedef    char        byte;
  122. typedef unsigned char    ubyte;
  123. typedef    int        word;
  124. typedef    unsigned int     uword;
  125. typedef    unsigned long    ulong;
  126. typedef int        void;        /* kein "void"            */
  127.     
  128. #endif
  129.  
  130.  
  131.  
  132.  
  133.  
  134. /*
  135.  * Konstanten
  136.  * ----------
  137.  * Die am häufigsten gebrauchten und bekanntesten Konstanten kann man     
  138.  * an dieser Stelle auch gleich einfügen:
  139.  */
  140.  
  141. #define    NULL    ((byte*)0L)    /* Ein Muß bei Alcyon, wenn portab.h    */
  142. #define EOS    ((byte)0)    /* nicht mit "#include" eingeschlossen    */
  143. #define TRUE    1        /* wird                    */
  144. #define FALSE    0
  145. #define ON    1
  146. #define OFF    0
  147. #define    YES    1
  148. #define    NO    0
  149. #define    FOREVER    for(;;)
  150.  
  151.  
  152.  
  153.  
  154.  
  155. /*
  156.  * Include-Files
  157.  * -------------
  158.  * Hier sind alle normalerweise zur GEM-Programmierung benötigten
  159.  * Include-Files aufgeführt.
  160.  */
  161.  
  162. #ifdef MARK_WILLIAMS            /* Mark-Williams V1.1    */
  163. #    include <stdio.h>    
  164. #    include <osbind.h>    
  165. #    include <aesbind.h>
  166. #    include <vdibind.h>
  167. #    include <obdefs.h>
  168. #    include <gemdefs.h>
  169. #    include <scraplib.h>
  170. #endif
  171.  
  172. #ifdef    DIGITAL                /* Alcyon-C        */
  173. #    include <stdio.h>
  174. #    include <gembind.h>
  175. #    include <gemdefs.h>
  176. #    include <obdefs.h>
  177. #    include <vdibind.h>
  178. #    include <osbind.h>
  179. #    include <scraplib.h>
  180. #endif
  181.  
  182. #ifdef MEGAMAX                /* Megamax V1.1        */
  183. #    include <stdio.h>
  184. #    include <osbind.h>
  185. #    include <gembind.h>
  186. #    include <obdefs.h>
  187. #    include <gemdefs.h>
  188. #    include <scraplib.h>
  189. #endif
  190.  
  191. #ifdef    LATTICE                /* Lattice V3.04 mit Digilib */
  192. #     include "stdio.h"
  193. #    include "stdlib.h"
  194. #    include "string.h"
  195. #    include "osbind.h"
  196. #    include "dos.h"
  197. #    include "gemlib.h"
  198. #    include "math.h"
  199. #    include "scraplib.h"
  200. #endif
  201.